<?php

require_once "ComponentBase.php";
Loader::using("Models::Entities::Recaladas");
Loader::using("Models::Entities::RecaladasPuertos");

class RecaladasComponent extends ComponentBase {

    public function getAll() {
        return $this->Recaladas->GetAll();
    }

    public function getDeleted() {
        return $this->Recaladas->GetDeleted();
    }

    public function getByLinea($id) {
        return $this->Recaladas->GetByLinea($id);
    }

    public function getRecaladaPuerto($id) {
        return $this->Recaladas->GetRecaladaPuerto($id);
    }

    public function getArchivos($idRecalada) {
        return $this->Recaladas->GetArchivo($idRecalada);
    }
    
    public function getArchivoById($id) {
        return $this->Recaladas->GetArchivoById($id);
    }

    public function getResitro($id) {
        return $this->Recaladas->GetResitro($id);
    }

    public function getById($id) {
        return $this->Recaladas->GetById($id);
    }

    public function update(Recaladas $recalada) {

        $idViajeDescargue = $recalada->getIdViajeDescargue();
        $viajeDescargue = $recalada->getViajes();

        if ($viajeDescargue->getIdTerminal() != "") {
            if (!empty($idViajeDescargue)) {
                $viajeDescargue->setIdViaje($idViajeDescargue);
                $this->Recaladas->ActualizarViaje($viajeDescargue);
            } else {
                /* @var $nuevoViaje Viajes */
                $nuevoViaje = $this->Recaladas->AgregarViaje($viajeDescargue);
                $recalada->setViajes($nuevoViaje);
            }
        } else {
            $recalada->setViajes(null);
        }

        $idViajeCargue = $recalada->getIdViajeCargue();
        $viajeCargue = $recalada->getViajes1();

        if ($viajeCargue->getIdTerminal() != "") {
            if (!empty($idViajeCargue)) {
                $viajeCargue->setIdViaje($idViajeCargue);
                $this->Recaladas->ActualizarViaje($viajeCargue);
            } else {
                /* @var $nuevoViaje Viajes */
                $nuevoViaje = $this->Recaladas->AgregarViaje($viajeCargue);
                $recalada->setViajes1($nuevoViaje);
            }
        } else {
            $recalada->setViajes1(null);
        }

        $this->Recaladas->Update($recalada);
        $recaladaPuerto = $recalada->getRecaladasPuertos();

        if ($recaladaPuerto->getIdRecalada() != $recalada->getIdRecalada()) {
            $recaladaPuerto->setIdRecalada($recalada->getIdRecalada());
            $this->Recaladas->CreateRecaladaPuerto($recaladaPuerto);
        } else {
            $this->Recaladas->UpdateRecaladaPuerto($recaladaPuerto);
        }
    }

    public function updateRegistroRecalada(RegistrosRecaladas $registroRecalada) {
        return $this->Recaladas->UpdateRegistroRecalada($registroRecalada);
    }

    public function updateRecaladaPuerto(RecaladasPuertos $recaladaPuerto) {
        return $this->Recaladas->UpdateRecaladaPuerto($recaladaPuerto);
    }

    public function create(Recaladas $recalada) {
        return $this->Recaladas->Create($recalada);
    }

    public function createRegistro(RegistrosRecaladas $registro) {
        return $this->Recaladas->CreateRegistro($registro);
    }

    public function createArchivo(Archivos $archivo) {
        return $this->Recaladas->CreateArchivo($archivo);
    }

    public function remove($id) {
        return $this->Recaladas->Remove($id);
    }

    public function listarPorEta($RangoInicial, $RangoFinal, $idAgencia) {
        return $this->Recaladas->ListarPorEta($RangoInicial, $RangoFinal, $idAgencia);
    }
    
    public function eliminarArchivo($id) {
        return $this->Recaladas->EliminarArchivo($id);
    }

}
?>

